package com.kakarote.admin.service;

import com.kakarote.admin.entity.PO.AdminCompanySecuritySetting;
import com.kakarote.core.entity.AdminCompanySecuritySettingVO;
import com.kakarote.core.entity.BasePage;
import com.kakarote.core.entity.PageEntity;
import com.kakarote.core.servlet.BaseService;

import java.io.Serializable;
import java.util.List;

/**
 * <p>
 * 企业安全设置表 服务类
 * </p>
 *
 * @author yangzenghui
 * @since 2023-08-28
 */
public interface IAdminCompanySecuritySettingService extends BaseService<AdminCompanySecuritySetting> {

    /**
     * 根据id查询字段配置
     *
     * @param id 主键ID
     * @return data
     * @author yangzenghui
     * @since 2023-08-28
     */
    public AdminCompanySecuritySetting queryById(Serializable id);

    /**
     * 根据配置类型查询字段配置
     *
     * @param configType 配置类型 1.密码规则设置 2.登出规则设置
     * @return data
     * @author yangzenghui
     * @since 2023-08-28
     */
    public AdminCompanySecuritySettingVO queryByConfigType(Integer configType);

    /**
     * 根据配置类型和企业id 查询字段配置
     *
     * @param configType 配置类型 1.密码规则设置 2.登出规则设置
     * @return data
     * @author yangzenghui
     * @since 2023-08-28
     */
    public AdminCompanySecuritySettingVO queryByConfigTypeAndCompanyId(Integer configType);

    /**
     * 保存或新增信息
     *
     * @param vo vo
     * @author yangzenghui
     * @since 2023-08-28
     */
    public void add(AdminCompanySecuritySettingVO vo);

    /**
     * 保存或新增信息
     *
     * @param vo vo
     * @author yangzenghui
     * @since 2023-08-28
     */
    public void update(AdminCompanySecuritySettingVO vo);


    /**
     * 查询所有数据
     *
     * @param search 搜索条件
     * @return list
     * @author yangzenghui
     * @since 2023-08-28
     */
    public BasePage<AdminCompanySecuritySetting> queryPageList(PageEntity search);

    /**
     * 根据ID列表删除数据
     *
     * @param ids ids
     * @author yangzenghui
     * @since 2023-08-28
     */
    public void deleteByIds(List<Serializable> ids);

    /**
     * 根据配置类型和企业id 查询字段配置（未登录时）
     *
     * @param configType 配置类型 1.密码规则设置 2.登出规则设置
     * @return data
     * @author yangzenghui
     * @since 2023-08-28
     */
    public AdminCompanySecuritySettingVO querySecuritySetting(Integer configType, Long companyId);


}
